上一篇介紹了如何利用2進位來表示10進位的數字,這次則要再進階的介紹一下4、8、16進位。在下一篇會講解一下這些進位在電腦裡面是怎麼被運用的。
4進位顧名思義,就是每當數字到4的時候就要進一位。
例如:
【4 進位】
10進位 | 4進位 | 可以想成 |
---|---|---|
21 | 0 111 | 1 * 16 + 1 * 4 + 1 * 1 |
64 | 1 000 | 64 ( 4的3次方 ) |
15 | 0 033 | 3 * 4 + 3 * 1 |
81 | 1 101 | 1 * 64 + 1 * 16 + 1 * 1 |
8 進位其實也就是當數字到 8 的時候就要進位。7 → 8
要進位;63 → 64
要進位;511 → 512
要進位,以此類推。
例如:
【8 進位】
10進位 | 4進位 | 可以想成 |
---|---|---|
21 | 025 | 2 * 8 + 5 * 1 ( 8 ^ 0) |
64 | 100 | 1 * 64 |
15 | 017 | 1 * 8 + 7 * 1 |
81 | 121 | 1 * 64 + 2 * 8 + 1 * 1 |
8 進位其實也就是當數字到 8 的時候就要進位。15 → 16
要進位;255 → 256
要進位,以此類推。
但是要注意的是,在16進位裡面數字會這樣表示:
16進位 : 0 1 2 3 4 5 6 7 8 9 10 A B C D E
對應到 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
例如:
【16 進位】
10進位 | 4進位 | 可以想成 |
---|---|---|
21 | 015 | 1 * 16 + 5 * 1 |
64 | 040 | 4 * 16 |
15 | 00E | 15 * 1 |
81 | 051 | 5 * 16 + 1 * 1 |
512 | 200 | 2 * 16^2 (256) |
可以看到在16 進位中15會被表示成 E 。
這是因為在2進位中,如果今天要存入一個很大的數字,就只能用一大串數字來儲存,但是4進位或甚至16進位可以在更少的數列中儲存更多的資訊。
可以舉一個例子:
如果今天要在電腦裡面存入一個數字 9987
我們可以把這個數字拆解成
8192(2^13) + 1024(2^10) + 512(2^9) + 256(2^8) + 2(2^1) + 1(2^0)
如果以二進位來記錄的話會長成這樣:
010 0111 0000 0011
如果把它改成8進位會長怎樣呢?
可以把數字拆成:
2 * 4096(8^4) + 3 * 512(8^3) + 4 * 64(8^2) + 3 * 1(8^0)
所以以8進位表示會變成:
23403
會節省了很多的時間!
那今天如果要直接換算一個數字,然後把它換成其他的進位制,總不可能像上面一樣要先因式分解,再一個一個的算吧!
其實有一個方式,可以換算10進位與其他進位:
用短除法除想要的數字 例如:
要把(58)10進位
變成2進位
就可以把
58 / 2 = 29 mod 0
29 / 2 = 14 mod 1
14 / 2 = 7 mod 0
7 / 2 = 3 mod 1
3 / 2 = 1 mod 1
1 / 2 = 1 mod 1
就可以把它寫成 : 111010
你看,是不是很輕鬆!
如果今天要把2進位換成8或是16進位呢?
這時候只要使出畫線大法就好了。
例如:
2進位
:10111010011
要換成8進位的話,就要從最小的開始,每三個畫一條線:
2進位
:10 111 010 011
這時候就可以把對應到2進位的值換成8進位的值,就會變成:
8進位
:2 7 2 3
那如果是要換算成16進位的話,就要改成四個畫一條線:
2進位
:101 1101 0011
16進位
: 5 D 3
這樣就完成了!
那如果要換回來,就是把16進位換成每四個一組的2進位:
16進位
: A 5 4
2進位
: 1010 0101 0100
這樣就可以換回來了!
這些進位制有時候會搞倒我,因為我的數學實在不太行:(
但我還是進我的全力來搞懂他們,另外還有一些補數的部分,其實我還不是很了解,大家有空的話可以看看杰哥的文章,他寫的hen好!